Git Worktree

Gitリポジトリから複数の作業ディレクトリを作成し、異なるブランチで同時に作業できる機能。

仕組み

通常、1つのリポジトリには1つの作業ディレクトリ(working directory)しか存在しない。ブランチを切り替えるには git checkoutgit switch を使うが、これは作業ディレクトリのファイルを書き換える操作である。

Git Worktreeは、同じリポジトリ(.git)を共有しながら、複数の作業ディレクトリを作成できる。各worktreeは異なるブランチにチェックアウトされ、完全に独立したファイル状態を持つ。

project/
├── .git/                    # 共有されるリポジトリ
├── src/, package.json, ...  # メインworktree(mainブランチ)

../project-feature-a/        # 追加worktree(feature-aブランチ)
├── .git → ../project/.git   # シンボリックリンク
├── src/, package.json, ...  # 独立したファイル状態

../project-feature-b/        # 追加worktree(feature-bブランチ)
├── .git → ../project/.git
├── src/, package.json, ...

基本的な使い方

# 新しいworktreeを作成(新規ブランチ)
git worktree add ../project-feature-a -b feature-a

# 既存ブランチでworktreeを作成
git worktree add ../project-hotfix hotfix/urgent-fix

# worktree一覧を表示
git worktree list

# worktreeを削除
git worktree remove ../project-feature-a

利点

AIエージェントでの活用

Claude CodeなどのAIエージェントを使う際、複数の機能を並列開発できる。

# 並列作業用のworktreeを作成
git worktree add ../project-feature-a -b feature-a
git worktree add ../project-feature-b -b feature-b

# 別々のターミナルでClaude Codeを起動
cd ../project-feature-a && claude
cd ../project-feature-b && claude

各worktreeで独立したClaude Codeセッションを持つことで、異なる機能を同時に実装できる。

詳細はClaude CodeとGit Worktreeによる並列開発を参照。

注意点

関連